Mediator is a behavioral design pattern that lets you reduce chaotic dependencies between objects. The pattern restricts direct communications between the objects and forces them to collaborate only via a mediator object.
--Refactoring Guru
中介者模式是一種行為型設計模式,能讓你減少物件和物件之間混亂的相依性。這個模式限制了物件之間的直接溝通,強制讓它們透過一個中介者物件來合作。
圖像化來說...
假設我們今天有ABCD 4個物件,A想要跟B溝通,但同時間CD也想要跟B溝通,
此時,物件和物件之間的耦合度很高,
且在生活中其他實際例子,物件數量遠多於個位數,
系統中的耦合度越高的話,這個程式的維護成本就越高。
為了解決物件之間的耦合度問題~
我們在務間之間放一個中介者,
每個物件送出訊息給中介者,中介者會再依照要求,把訊息送到指定的位址
Mediator(中介者):
中介者是中介者模式中的關鍵元素,負責協調不同Colleague之間的溝通。它用於處理Colleague物件之間的交互。Mediator 通常是一個介面或抽象類別。
ConcreteMediator(具體中介者):
具體中介者是中介者的實作,它實際協調Colleague物件之間的溝通。具體中介者通常包含對所有Colleague的參照,並實作Mediator介面或繼承Mediator類別,以提供協調和溝通的具體邏輯。
Colleague:
Colleague是中介者模式中的參與者,它們需要合作,但不直接溝通。Colleague物件之間的通信是透過中介者進行的。Colleague 通常包含對Mediator的引用,以便將訊息傳遞給中介者,或接收從中介者傳遞來的訊息。
ConcreteColleague:具體Colleague是Colleague的實作,它實際參與到合作中,並透過Mediator來進行通信。ConcreteColleague是一個具體的類別,實作了Colleague介面或繼承Colleague類別。